In a flash memory system, redundant array of independent disks (RAID) techniques can be used to combine multiple flash components into a single logical unit, e.g. a stripe or a redundancy stripe, for the purposes of data redundancy or performance improvement. For example, an exclusive-or operation can be performed on codewords written to a set of blocks to generate redundancy data which is then written to an additional block. If one of the codewords is subsequently lost or otherwise cannot be properly decoded, the lost codeword can be recovered using the other codewords (assuming they can be correctly decoded), in conjunction with the redundancy data.